package views;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

import models.Sistema;
import daos.Dao_Oficinas;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class PantallaPrincipal extends javax.swing.JFrame {
	private JMenuBar jMenuBar1;
	private JComboBox comboLateral;
	private JMenu mnuCasillas;
	private JMenuItem itmBajaRelacion;
	private JMenuItem itmAltaRealacion;
	private JMenu mnuRelacionDeConfianza;
	private JMenuItem itmBajaCasilla;
	private JMenuItem itmAltaCasilla;
	private JMenuItem itmBajaOficina;
	private JMenuItem itmAltaOficina;
	private JMenu mnuOficinas;
	private JMenuItem itmSalir;
	private ActionsListener listener= new ActionsListener();
	private PantallaPrincipal window;
	private ComboPanel panel;
	private JMenuItem itemGuardar;
	private JMenu menuArchivo;
	private JMenuItem itmDesactivar;
	private JMenuItem itmActivarListados;
	private JMenu mnuListados;
	private JList listaRelaciones;
	private JLabel lblRelacionDeConfianza;
	private JScrollPane scrollRelacion;
	private JLabel lblCasillas;
	private JList listaCasillas;
	private JScrollPane scrollCasillas;
	private JList listaOficinas;
	private JLabel lblOficinas;
	private JScrollPane scrollOficinas;
	private JPanel VerListadosPanel;
	private JScrollPane scrollListados;
	private AltaCasilla nuevaCasilla;
	private AltaRelacion nuevaRelacion;
	private BajaCasilla fmrBajaCasilla;
	private DefaultListModel listaOficinasModel= new DefaultListModel();
	private DefaultListModel listaCasillasModel= new DefaultListModel();
	private DefaultListModel listaRelacionesModel= new DefaultListModel();
	private Dao_Oficinas dao= Dao_Oficinas.getInstancia();
	
	
	private Sistema sis= Sistema.getInstancia();
	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				PantallaPrincipal inst = new PantallaPrincipal();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
				
			}
		});
	}
	
	public PantallaPrincipal() {
		super();
		getContentPane().setLayout(null);
		window = this;
		{
			scrollListados = new JScrollPane();
			getContentPane().add(scrollListados);
			scrollListados.setPreferredSize(new java.awt.Dimension(927, 345));
			{
				VerListadosPanel = new JPanel();
				scrollListados.setViewportView(VerListadosPanel);
				VerListadosPanel.setLayout(null);
				VerListadosPanel.setPreferredSize(new java.awt.Dimension(926, 327));
				{
					scrollOficinas = new JScrollPane();
					VerListadosPanel.add(scrollOficinas);
					scrollOficinas.setBounds(37, 26, 221, 259);
					{
						listaOficinas = new JList();
						scrollOficinas.setViewportView(listaOficinas);
						listaOficinas.setModel(listaOficinasModel);
						listaOficinas.setPreferredSize(new java.awt.Dimension(218, 76));
					}
				}
				{
					lblOficinas = new JLabel();
					VerListadosPanel.add(lblOficinas);
					lblOficinas.setText("Oficinas:");
					lblOficinas.setBounds(37, 4, 187, 16);
				}
				{
					scrollCasillas = new JScrollPane();
					VerListadosPanel.add(scrollCasillas);
					scrollCasillas.setBounds(335, 26, 223, 259);
					{
						listaCasillas = new JList();
						scrollCasillas.setViewportView(listaCasillas);
						listaCasillas.setModel(listaCasillasModel);
					}
				}
				{
					lblCasillas = new JLabel();
					VerListadosPanel.add(lblCasillas);
					lblCasillas.setText("Casillas: ");
					lblCasillas.setBounds(336, 4, 215, 16);
				}
				{
					scrollRelacion = new JScrollPane();
					VerListadosPanel.add(scrollRelacion);
					scrollRelacion.setBounds(629, 26, 214, 259);
					{
						listaRelaciones = new JList();
						scrollRelacion.setViewportView(listaRelaciones);
						listaRelaciones.setModel(listaRelacionesModel);
					}
				}
				{
					lblRelacionDeConfianza = new JLabel();
					VerListadosPanel.add(lblRelacionDeConfianza);
					lblRelacionDeConfianza.setText("Relacion de confianza: ");
					lblRelacionDeConfianza.setBounds(629, 4, 214, 16);
				}
				
			}
			scrollListados.setVisible(false);
			scrollListados.setBounds(0, 41, 927, 396);
		}
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			this.setPreferredSize(new java.awt.Dimension(935, 460));

			{
				jMenuBar1 = new JMenuBar();
				setJMenuBar(jMenuBar1);
				{
					menuArchivo = new JMenu();
					jMenuBar1.add(menuArchivo);
					menuArchivo.setText("Archivo");
					{
						itemGuardar = new JMenuItem();
						menuArchivo.add(itemGuardar);
						itemGuardar.setText("Salir y guardar");
						itemGuardar.addActionListener(listener);
					}
					{
						itmSalir = new JMenuItem();
						menuArchivo.add(itmSalir);
						itmSalir.setText("Salir sin guardar");
						itmSalir.addActionListener(listener);
					}
				}
				{
					mnuOficinas = new JMenu();
					jMenuBar1.add(mnuOficinas);
					mnuOficinas.setText("Oficinas");
					{
						itmAltaOficina = new JMenuItem();
						mnuOficinas.add(itmAltaOficina);
						itmAltaOficina.setText("Alta oficina");
						itmAltaOficina.addActionListener(listener);
					}
					{
						itmBajaOficina = new JMenuItem();
						mnuOficinas.add(itmBajaOficina);
						itmBajaOficina.setText("Baja Oficina");
						itmBajaOficina.addActionListener(listener);
					}
				}
				{
					mnuCasillas = new JMenu();
					jMenuBar1.add(mnuCasillas);
					mnuCasillas.setText("Casillas");
					{
						itmAltaCasilla = new JMenuItem();
						mnuCasillas.add(itmAltaCasilla);
						itmAltaCasilla.setText("Alta Casilla");
						itmAltaCasilla.addActionListener(listener);
					}
					{
						itmBajaCasilla = new JMenuItem();
						mnuCasillas.add(itmBajaCasilla);
						itmBajaCasilla.setText("Baja casilla");
						itmBajaCasilla.addActionListener(listener);
						
					}
				}
				{
					mnuRelacionDeConfianza = new JMenu();
					jMenuBar1.add(mnuRelacionDeConfianza);
					mnuRelacionDeConfianza.setText("Relacion de Confianza");
					{
						itmAltaRealacion = new JMenuItem();
						mnuRelacionDeConfianza.add(itmAltaRealacion);
						itmAltaRealacion.setText("Alta Relacion");
						itmAltaRealacion.addActionListener(listener);
					}
					{
						itmBajaRelacion = new JMenuItem();
						mnuRelacionDeConfianza.add(itmBajaRelacion);
						itmBajaRelacion.setText("Baja Relacion");
						itmBajaRelacion.addActionListener(listener);
					}
				}
				{
					mnuListados = new JMenu();
					jMenuBar1.add(mnuListados);
					mnuListados.setText("Listados");
					{
						itmActivarListados = new JMenuItem();
						mnuListados.add(itmActivarListados);
						itmActivarListados.setText("Activar Listados");
						itmActivarListados.addActionListener(listener);
					}
					{
						itmDesactivar = new JMenuItem();
						mnuListados.add(itmDesactivar);
						itmDesactivar.setText("Desactivar Listados");
						itmDesactivar.addActionListener(listener);
					}
				}

			}
			pack();
			this.setSize(935, 460);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public class ActionsListener implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent event) {
			Object source= event.getSource();
			if(source == itmSalir){
				System.exit(0);
			}
			else if(source == itmAltaOficina){
				
				String nombreOficina= "";
				boolean validar=false;
				while (nombreOficina != null && validar == false)
				{
					nombreOficina= JOptionPane.showInputDialog("Introduzca un nombre para la nueva oficina: ");
					validar=sis.validarNombreOficina(nombreOficina);
					if (nombreOficina!= null){
						if(!nombreOficina.isEmpty())
						{
							if(validar){
								sis.crearOficinaDeCorreo(nombreOficina);
								JOptionPane.showMessageDialog(null,"nueva oficina creada: " + nombreOficina);
							}
							else{
								JOptionPane.showMessageDialog(null, "Ya existe una oficina con ese nombre ");
								validar=false;
							}
						}else{
							JOptionPane.showMessageDialog(null, "Debe completar el nombre de la oficina");
							validar=false;
						}
					}
				}
				
			}
			else if(source == itmBajaOficina){
				panel = new ComboPanel(window, sis.getOficinas() );
				panel.setVisible(true);
				
			}
			else if(source == itmAltaCasilla){
				nuevaCasilla = new AltaCasilla(window);
				nuevaCasilla.setVisible(true);
			}
			else if(source == itmAltaRealacion){
				nuevaRelacion = new AltaRelacion(window,1);
				nuevaRelacion.setVisible(true);
			}
			else if(source == itmBajaRelacion){
				nuevaRelacion = new AltaRelacion(window,2);
				nuevaRelacion.setVisible(true);
			}
			else if(source == itmBajaCasilla){
				fmrBajaCasilla= new BajaCasilla(window);
				fmrBajaCasilla.setVisible(true);
			}else if(source == itmActivarListados){
				scrollListados.setVisible(true);
			}else if (source == itmDesactivar){
				scrollListados.setVisible(false);
			}else if (source == itemGuardar){
				dao.guardarCambios();
				System.exit(0);
			}
		}
	}

	public JList getListaRelaciones() {
		return listaRelaciones;
	}

	public JList getListaCasillas() {
		return listaCasillas;
	}

	public JList getListaOficinas() {
		return listaOficinas;
	}
	
}
